package es.usj.redes.dao;

import java.util.List;

import es.usj.redes.dto.Enviado;

/**
 * Interfaz para el acceso a la tabla Enviado.
 * 
 * Mediante esta interfaz se especifican los metodos minimos que tienen 
 * que implementar la clase de acceso a la tabla enviado.
 * 
 *@version 1.0
 *@since 1.0
 */
public interface EnviadoDAO {
	/**
	 * Crea una fila nueva de enviado.
	 * @param obj el objeto a crear
	 * @throws DAOException
	 */
	public void create(Enviado obj) throws DAOException;
	/**
	 * Elimina a partir de su ID la fila especificada
	 * @param idMailUsers id de la PK de la fila.
	 * @throws DAOException
	 */
	public void delete(int idMailUsers) throws DAOException;
	/**
	 * Actauliza la fila especificada por el idMailUsers dentro del objeto.
	 * @param obj enviado para actualizar los datos de la fila.
	 * @throws DAOException
	 */
	public void update(Enviado obj) throws DAOException;
	/**
	 * Lee un objeto a partir de su id
	 * @param idMailUsers Primary Key para leer la fila especificada.
	 * @return objeto con los datos correspondientes al ID
	 * @throws DAOException
	 */
	public Enviado read(int idMailUsers) throws DAOException;
	/**
	 * Lista todos los objetos que hay en la BBDD
	 * @return
	 * @throws DAOException
	 */
	public List<Enviado> listAll() throws DAOException;
	/**
	 * Lista solo los enviados por el usuario que se especifica en la llamada
	 * @param idUsuario id del user que se quiere filtar.
	 * @return
	 * @throws DAOException
	 */
	public List<Enviado> listByUsuario(int idUsuario) throws DAOException;
}
